home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Workbench Design
/
WB Collection.iso
/
workbench werkzeuge
/
bildschirmschoner
/
bserver_v1.5
/
sources.lha
/
Sources
/
server
/
gadgets.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-11-08
|
7KB
|
254 lines
#include <exec/types.h>
#include <exec/memory.h>
#include <exec/libraries.h>
#include <intuition/gadgetclass.h>
#include <string.h>
#include <proto/exec.h>
#include <proto/intuition.h>
#include <proto/gadtools.h>
#include "/include/server.h"
struct Gadget *glist, *gad, *blank_gdg, *random_gdg, *list_gdg, *args_gdg,
*time_gdg, *tchange_gdg, *bri_gdg, *snd_gdg;
extern UWORD wwidth, wheight;
extern struct List ClientsList, *ModeList;
extern struct ModeNode *DisplayNode;
extern UWORD delaySecs, changeSecs;
extern UBYTE briLevel, sndLevel;
extern BOOL CommodityActive, RandomClient;
extern UWORD DefaultClient;
extern WORD ActiveClient;
extern void FreeClientsList( void );
extern struct List *CreateModeList( void );
extern void DeleteModeList( void );
extern void GetDisplayNodeFromID( void );
extern struct ClientNode *FindClientNode( WORD );
extern char *msg_timeout, *msg_changetime, *msg_random, *msg_hide,
*msg_quit, *msg_blank, *msg_killsel, *msg_addcli, *msg_brilevel,
*msg_sndlevel;
/****************
* *
* GADGETS STUFF *
* *
****************/
struct VisualInfo *vi;
UWORD fonth;
struct NewGadget newgdg = { 0, 0, 0, 0, NULL, NULL, 0, 0, 0, 0 };
struct Screen *WBS;
struct Library *GadToolsBase;
struct IntuitionBase *IntuitionBase;
UWORD wleft = (UWORD)~0, wtop = (UWORD)~0;
UWORD zoomdims[4];
struct DrawInfo *dri;
struct IntuiText it = { 0, 0, 0, 0, 0, NULL, NULL, NULL };
UWORD maxstrlen;
UWORD CheckMax( STRPTR text, UWORD add_gdw, UWORD prev )
{
register UWORD ilength;
it.IText = text;
if ( ( ilength = IntuiTextLength( &it ) + add_gdw ) > prev )
return( ilength );
else
return( prev );
}
UWORD SetUpGadgets( void )
{
if ( CreateModeList() )
{
GetDisplayNodeFromID();
if ( WBS = LockPubScreen( NULL ) )
{
fonth = WBS->Font->ta_YSize;
if ( fonth < 12 )
fonth = 12;
it.ITextFont = WBS->Font;
newgdg.ng_TextAttr = WBS->Font;
newgdg.ng_Height = fonth + 4;
if ( vi = GetVisualInfo( WBS, TAG_END ) )
{
newgdg.ng_VisualInfo = vi;
newgdg.ng_TopEdge = WBS->BarHeight + 3;
maxstrlen = 0;
maxstrlen = CheckMax( msg_timeout, 50, maxstrlen );
maxstrlen = CheckMax( msg_changetime, 50, maxstrlen );
maxstrlen = CheckMax( msg_brilevel, 50, maxstrlen );
maxstrlen = CheckMax( msg_random, 26, maxstrlen );
maxstrlen = CheckMax( msg_hide, 0, maxstrlen );
maxstrlen = CheckMax( msg_quit, 0, maxstrlen );
maxstrlen = CheckMax( msg_blank, 0, maxstrlen );
maxstrlen = CheckMax( msg_killsel, 0, maxstrlen );
maxstrlen = CheckMax( msg_addcli, 0, maxstrlen );
newgdg.ng_LeftEdge = WBS->WBorLeft + maxstrlen - 30;
gad = CreateContext (&glist);
newgdg.ng_Flags = PLACETEXT_LEFT;
newgdg.ng_Width = 50;
newgdg.ng_GadgetText = msg_timeout;
newgdg.ng_GadgetID = TIMEOUT_GDG;
gad = time_gdg = CreateGadget( INTEGER_KIND, gad, &newgdg,
GTIN_Number, delaySecs,
GTIN_MaxChars, 5,
GT_Underscore, '_', TAG_END );
newgdg.ng_TopEdge += gad->Height + 7;
newgdg.ng_GadgetText = msg_changetime;
newgdg.ng_GadgetID = CHANGETIME_GDG;
gad = tchange_gdg = CreateGadget( INTEGER_KIND, gad, &newgdg,
GTIN_Number, changeSecs,
GTIN_MaxChars, 5,
GA_Disabled, !RandomClient,
GT_Underscore, '_', TAG_END );
newgdg.ng_TopEdge += gad->Height + 7;
newgdg.ng_GadgetText = msg_brilevel;
newgdg.ng_GadgetID = BRILEVEL_GDG;
gad = bri_gdg = CreateGadget( INTEGER_KIND, gad, &newgdg,
GTIN_Number, briLevel,
GTIN_MaxChars, 3,
GT_Underscore, '_', TAG_END );
newgdg.ng_TopEdge += gad->Height + 7;
newgdg.ng_GadgetText = msg_sndlevel;
newgdg.ng_GadgetID = SNDLEVEL_GDG;
gad = snd_gdg = CreateGadget( INTEGER_KIND, gad, &newgdg,
GTIN_Number, sndLevel,
GTIN_MaxChars, 3,
GT_Underscore, '_', TAG_END );
newgdg.ng_Height = fonth - 1;
newgdg.ng_Width = 26;
newgdg.ng_GadgetID = RANDOM_GDG;
newgdg.ng_TopEdge += gad->Height + 7;
newgdg.ng_LeftEdge = WBS->WBorLeft + maxstrlen - 6;
newgdg.ng_GadgetText = msg_random;
random_gdg = gad = CreateGadget( CHECKBOX_KIND, gad, &newgdg,
GTCB_Checked, RandomClient,
GTCB_Scaled, TRUE,
GT_Underscore, '_', TAG_END );
newgdg.ng_Height = fonth + 4;
newgdg.ng_GadgetID = HIDE_GDG;
newgdg.ng_TopEdge += fonth + 2;
newgdg.ng_LeftEdge = WBS->WBorLeft + 4;
newgdg.ng_Flags = 0;
newgdg.ng_Width = maxstrlen + 16;
newgdg.ng_GadgetText = msg_hide;
gad = CreateGadget( BUTTON_KIND, gad, &newgdg,
GT_Underscore, '_', TAG_END );
newgdg.ng_GadgetID = QUIT_GDG;
newgdg.ng_TopEdge += gad->Height + 1;
newgdg.ng_GadgetText = msg_quit;
gad = CreateGadget( BUTTON_KIND, gad, &newgdg,
GT_Underscore, '_', TAG_END );
newgdg.ng_GadgetID = BLANK_GDG;
newgdg.ng_TopEdge += gad->Height + 1;
newgdg.ng_GadgetText = msg_blank;
blank_gdg = gad = CreateGadget( BUTTON_KIND, gad, &newgdg,
GT_Underscore, '_', TAG_END );
newgdg.ng_GadgetID = KILL_GDG;
newgdg.ng_LeftEdge = WBS->WBorLeft + maxstrlen + 22;
newgdg.ng_GadgetText = msg_killsel;
gad = CreateGadget( BUTTON_KIND, gad, &newgdg,
GT_Underscore, '_', TAG_END );
newgdg.ng_GadgetID = ADDCLIENTS_GDG;
newgdg.ng_TopEdge -= blank_gdg->Height + 1;
newgdg.ng_GadgetText = msg_addcli;
gad = CreateGadget( BUTTON_KIND, gad, &newgdg,
GT_Underscore, '_', TAG_END );
newgdg.ng_GadgetID = CLIENTARGS_GDG;
newgdg.ng_TopEdge -= blank_gdg->Height + 1;
newgdg.ng_GadgetText = NULL;
args_gdg = gad = CreateGadget( STRING_KIND, gad, &newgdg,
GTST_MaxChars, ARGS_MAXLENGTH,
GTST_String, FindClientNode( DefaultClient )->cn_ClientArgs,
TAG_END );
newgdg.ng_GadgetID = LIST_GDG;
newgdg.ng_TopEdge = WBS->BarHeight + 3;
newgdg.ng_GadgetText = NULL;
newgdg.ng_Height = gad->TopEdge - newgdg.ng_TopEdge - 2;
newgdg.ng_Flags = PLACETEXT_ABOVE;
list_gdg = gad = CreateGadget( LISTVIEW_KIND, gad, &newgdg,
GTLV_Labels, &ClientsList,
GTLV_Top, DefaultClient,
GTLV_Selected, DefaultClient,
GTLV_ShowSelected, NULL,
TAG_END );
newgdg.ng_GadgetID = MODEID_GDG;
newgdg.ng_TopEdge = blank_gdg->TopEdge + blank_gdg->Height + 1;
newgdg.ng_LeftEdge = WBS->WBorLeft + 4;
newgdg.ng_Width = maxstrlen * 2 + 34;
newgdg.ng_Height -= fonth << 1;
newgdg.ng_GadgetText = NULL;
gad = CreateGadget( LISTVIEW_KIND, gad, &newgdg,
GTLV_Labels, ModeList,
GTLV_Top, DisplayNode->mn_Index,
GTLV_Selected, DisplayNode->mn_Index,
GTLV_ShowSelected, NULL,
TAG_END );
/* Set up gadgets */
if ( gad )
{
wwidth = (UWORD)(gad->LeftEdge + gad->Width + 4 + WBS->WBorRight);
if ( GadToolsBase->lib_Version < 38 )
wheight = (UWORD)(gad->TopEdge + 1 + fonth + WBS->WBorBottom);
else
wheight = (UWORD)(gad->TopEdge + WBS->WBorBottom);
if ( wleft == ~0 )
wleft = (WBS->Width - wwidth)>>1;
if ( wtop == ~0 )
wtop = (WBS->Height - wheight)>>1;
zoomdims[0] = (UWORD)~0;
zoomdims[1] = (UWORD)~0;
zoomdims[2] = wwidth;
zoomdims[3] = wheight + gad->Height + 2;
return( TRUE );
}
FreeGadgets( glist );
}
FreeVisualInfo( vi );
vi = NULL;
}
UnlockPubScreen( NULL, WBS );
}
DeleteModeList();
return( FALSE );
}
void RemoveGadgets( void )
{
FreeGadgets( glist );
FreeVisualInfo( vi );
UnlockPubScreen( NULL, WBS );
DeleteModeList();
}